(* Content-type: application/mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Mathematica 7.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       145,          7]
NotebookDataLength[     39683,        933]
NotebookOptionsPosition[     38017,        876]
NotebookOutlinePosition[     38776,        903]
CellTagsIndexPosition[     38733,        900]
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[
 RowBox[{
  RowBox[{"dct", "[", "k_", "]"}], ":=", 
  RowBox[{"Table", "[", 
   RowBox[{
    RowBox[{
     RowBox[{"Sqrt", "[", 
      RowBox[{"2", "/", "k"}], "]"}], "*", 
     RowBox[{"Cos", "[", 
      RowBox[{
       RowBox[{"(", 
        RowBox[{"j", "+", 
         RowBox[{"1", "/", "2"}]}], ")"}], "*", "i", "*", 
       RowBox[{"\[Pi]", "/", "k"}]}], "]"}], "*", 
     RowBox[{"If", "[", 
      RowBox[{
       RowBox[{"i", "\[Equal]", "0"}], ",", 
       RowBox[{"Sqrt", "[", 
        RowBox[{"1", "/", "2"}], "]"}], ",", "1"}], "]"}]}], ",", 
    RowBox[{"{", 
     RowBox[{"i", ",", "0", ",", 
      RowBox[{"k", "-", "1"}]}], "}"}], ",", 
    RowBox[{"{", 
     RowBox[{"j", ",", "0", ",", 
      RowBox[{"k", "-", "1"}]}], "}"}]}], "]"}]}]], "Input",
 CellChangeTimes->{{3.680286532578555*^9, 3.680286545985277*^9}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"dst", "[", "k_", "]"}], ":=", 
  RowBox[{
   RowBox[{"Sqrt", "[", 
    RowBox[{"2", "/", "k"}], "]"}], "*", 
   RowBox[{
    RowBox[{"IdentityMatrix", "[", "k", "]"}], ".", 
    RowBox[{"Table", "[", 
     RowBox[{
      RowBox[{"Sin", "[", 
       RowBox[{
        RowBox[{"\[Pi]", "/", "k"}], "*", 
        RowBox[{"(", 
         RowBox[{"j", "+", 
          RowBox[{"1", "/", "2"}]}], ")"}], "*", 
        RowBox[{"(", 
         RowBox[{"i", "+", 
          RowBox[{"1", "/", "2"}]}], ")"}]}], "]"}], ",", 
      RowBox[{"{", 
       RowBox[{"i", ",", "0", ",", 
        RowBox[{"k", "-", "1"}]}], "}"}], ",", 
      RowBox[{"{", 
       RowBox[{"j", ",", "0", ",", 
        RowBox[{"k", "-", "1"}]}], "}"}]}], "]"}]}]}]}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{
   RowBox[{"Orthonormal", " ", "inverse", " ", "4"}], "-", 
   RowBox[{"point", " ", "Type"}], "-", 
   RowBox[{
   "II", " ", "DCT", " ", "with", " ", "scale", " ", "factors", " ", "moved", 
    " ", "up", " ", 
    RowBox[{"front", "."}]}]}], " ", "*)"}]], "Input",
 CellChangeTimes->{{3.689455954577486*^9, 3.6894559908945303`*^9}, {
  3.6894574459907703`*^9, 3.689457447768833*^9}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"idct4", "[", 
   RowBox[{"{", 
    RowBox[{"x0_", ",", "x2_", ",", "x1_", ",", "x3_"}], "}"}], "]"}], ":=", 
  RowBox[{"Module", "[", 
   RowBox[{
    RowBox[{"{", 
     RowBox[{
     "t0", ",", "t2", ",", "t1", ",", "t3", ",", "u0", ",", "u1", ",", "u2", 
      ",", "u3"}], "}"}], ",", "\[IndentingNewLine]", 
    RowBox[{
     RowBox[{"t0", "=", 
      RowBox[{"x0", "/", "2"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t2", "=", 
      RowBox[{"x2", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"\[Pi]", "/", "8"}], "]"}], "/", 
        RowBox[{"Sqrt", "[", "2", "]"}]}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t1", "=", 
      RowBox[{"x1", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"2", 
          RowBox[{"\[Pi]", "/", "8"}]}], "]"}], "/", 
        RowBox[{"Sqrt", "[", "2", "]"}]}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t3", "=", 
      RowBox[{"x3", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"3", 
          RowBox[{"\[Pi]", "/", "8"}]}], "]"}], "/", 
        RowBox[{"Sqrt", "[", "2", "]"}]}]}]}], ";", "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"u0", "=", 
      RowBox[{"t0", "+", "t1"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u1", "=", 
      RowBox[{"t0", "-", "t1"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u3", "=", 
      RowBox[{"t2", "+", "t3"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u2", "=", 
      RowBox[{
       RowBox[{
        RowBox[{"(", 
         RowBox[{"t2", "-", "t3"}], ")"}], "*", "2", "*", 
        RowBox[{"Cos", "[", 
         RowBox[{"\[Pi]", "/", "4"}], "]"}]}], "-", "u3"}]}], ";", 
     "\[IndentingNewLine]", "\[IndentingNewLine]", 
     RowBox[{"t0", "=", 
      RowBox[{"u0", "+", "u3"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t3", "=", 
      RowBox[{"u0", "-", "u3"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t1", "=", 
      RowBox[{"u1", "+", "u2"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t2", "=", 
      RowBox[{"u1", "-", "u2"}]}], ";", "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"{", 
      RowBox[{"t0", ",", "t1", ",", "t2", ",", "t3"}], "}"}]}]}], 
   "]"}]}]], "Input",
 CellChangeTimes->{
  3.6283110382920218`*^9, {3.628625397014907*^9, 3.6286254371201973`*^9}, 
   3.628625488449925*^9, {3.628625522132304*^9, 3.628625574314766*^9}, {
   3.628625627582643*^9, 3.6286256333438787`*^9}, {3.680286788734455*^9, 
   3.680286790495605*^9}, {3.680286979355199*^9, 3.6802871306998253`*^9}, {
   3.680287170703817*^9, 3.680287200056882*^9}, {3.680287352289215*^9, 
   3.680287414709656*^9}, {3.6802876188901854`*^9, 3.680287644241209*^9}, {
   3.680287765437449*^9, 3.68028778107164*^9}, {3.680288713585019*^9, 
   3.6802887182045813`*^9}, {3.680288905331279*^9, 3.6802889071967583`*^9}, {
   3.680288999391397*^9, 3.680289027563974*^9}, {3.680292398534225*^9, 
   3.680292524653289*^9}, {3.680292574154055*^9, 3.68029264394818*^9}, {
   3.680292687108424*^9, 3.6802927275364933`*^9}, {3.680292761682269*^9, 
   3.6802927889598017`*^9}, {3.680293352207075*^9, 3.680293355666101*^9}, {
   3.680293392291284*^9, 3.68029340793298*^9}, {3.6802934538244133`*^9, 
   3.680293464076676*^9}, {3.6802935286319847`*^9, 3.680293603641852*^9}, {
   3.680293739251665*^9, 3.6802937642766533`*^9}, {3.680298209353253*^9, 
   3.6802982546171083`*^9}, {3.680298337725443*^9, 3.680298406308937*^9}, {
   3.6803779167349377`*^9, 3.6803779172248774`*^9}, {3.6803779982496567`*^9, 
   3.680377998622126*^9}, {3.680379346571698*^9, 3.680379347919064*^9}, {
   3.6894481427011337`*^9, 3.689448150832456*^9}, {3.6894482034509573`*^9, 
   3.68944820641166*^9}, {3.6894482805132523`*^9, 3.689448299742581*^9}, {
   3.6894484414022903`*^9, 3.689448468453702*^9}, {3.689450313653837*^9, 
   3.68945031463161*^9}, {3.689450457531032*^9, 3.6894504984944983`*^9}, {
   3.689450531832411*^9, 3.689450631009921*^9}, {3.689450862812718*^9, 
   3.689450866466188*^9}, {3.6894510184112167`*^9, 3.6894510222490263`*^9}, 
   3.6894559148442173`*^9, {3.689459811492978*^9, 3.689459833926916*^9}, {
   3.6894598674430017`*^9, 3.6894598691357193`*^9}, 3.689459980443077*^9, {
   3.689465667437704*^9, 3.689465752379775*^9}, 3.689472817396112*^9}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Total", "[", 
  RowBox[{"Total", "[", 
   RowBox[{"Abs", "[", 
    RowBox[{"N", "[", 
     RowBox[{
      RowBox[{"IdentityMatrix", "[", "4", "]"}], "-", 
      RowBox[{"idct4", "/@", 
       RowBox[{"Transpose", "[", 
        RowBox[{"dct", "[", "4", "]"}], "]"}]}]}], "]"}], "]"}], "]"}], 
  "]"}]], "Input",
 CellChangeTimes->{{3.680286608089427*^9, 3.68028662438601*^9}, {
   3.680287143319973*^9, 3.680287153030628*^9}, {3.680287317762389*^9, 
   3.680287338520467*^9}, {3.680287425696512*^9, 3.680287431347616*^9}, {
   3.68028804306112*^9, 3.680288046694335*^9}, {3.6802925100554657`*^9, 
   3.680292510472445*^9}, 3.680377930563533*^9, 3.68944890507409*^9, 
   3.689465696238144*^9, 3.689472820399403*^9}],

Cell[BoxData["2.7755575615628914`*^-16"], "Output",
 CellChangeTimes->{
  3.689447527483487*^9, 3.6894481523275414`*^9, {3.6894481938845778`*^9, 
   3.689448208458036*^9}, {3.689448291654882*^9, 3.689448302074592*^9}, 
   3.6894483560871687`*^9, 3.689448470749959*^9, {3.6894489055166807`*^9, 
   3.6894489085605297`*^9}, 3.689450637490484*^9, {3.689450864640031*^9, 
   3.689450868032226*^9}, {3.68945101580655*^9, 3.6894510237242193`*^9}, 
   3.6894527584264107`*^9, 3.689453148015864*^9, 3.6894545586794147`*^9, 
   3.689454607522225*^9, 3.6894550274421787`*^9, 3.6894560881068487`*^9, 
   3.689457464469059*^9, 3.6894580715757923`*^9, 3.689459838188472*^9, 
   3.689459897282921*^9, 3.689459997247775*^9, {3.689465676228121*^9, 
   3.6894657012636337`*^9}, {3.689465747888298*^9, 3.6894657551384706`*^9}, 
   3.689472209958435*^9, 3.689472820830003*^9, 3.6894728612176447`*^9}]
}, Open  ]],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{
   RowBox[{"Orthonormal", " ", "inverse", " ", "4"}], "-", 
   RowBox[{"point", " ", "Type"}], "-", 
   RowBox[{
   "IV", " ", "DST", " ", "with", " ", "scale", " ", "factors", " ", "moved", 
    " ", "up", " ", 
    RowBox[{"front", "."}]}]}], " ", "*)"}]], "Input",
 CellChangeTimes->{{3.689455999917357*^9, 3.689456006285516*^9}, 
   3.68945744379906*^9}],

Cell[BoxData[
 RowBox[{
  RowBox[{"idst4", "[", 
   RowBox[{"{", 
    RowBox[{"x4_", ",", "x6_", ",", "x5_", ",", "x7_"}], "}"}], "]"}], ":=", 
  RowBox[{"Module", "[", 
   RowBox[{
    RowBox[{"{", 
     RowBox[{
     "t4", ",", "t6", ",", "t5", ",", "t7", ",", "t8", ",", "u4", ",", "u5", 
      ",", "u6", ",", "u7"}], "}"}], ",", "\[IndentingNewLine]", 
    RowBox[{
     RowBox[{"t4", "=", 
      RowBox[{"x4", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"7", 
          RowBox[{"\[Pi]", "/", "16"}]}], "]"}], "/", 
        RowBox[{"Sqrt", "[", "2", "]"}]}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t5", "=", 
      RowBox[{"x5", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"3", 
          RowBox[{"\[Pi]", "/", "16"}]}], "]"}], "/", 
        RowBox[{"Sqrt", "[", "2", "]"}]}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t6", "=", 
      RowBox[{"x6", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"5", 
          RowBox[{"\[Pi]", "/", "16"}]}], "]"}], "/", 
        RowBox[{"Sqrt", "[", "2", "]"}]}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t7", "=", 
      RowBox[{"x7", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"\[Pi]", "/", "16"}], "]"}], "/", 
        RowBox[{"Sqrt", "[", "2", "]"}]}]}]}], ";", "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"u6", "=", 
      RowBox[{"t6", "+", "t5"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u5", "=", 
      RowBox[{"t6", "-", "t5"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u4", "=", 
      RowBox[{"t7", "+", "t4"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u7", "=", 
      RowBox[{"t7", "-", "t4"}]}], ";", "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"t4", "=", 
      RowBox[{"u4", "+", "u6"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t6", "=", 
      RowBox[{
       RowBox[{"(", 
        RowBox[{"u4", "-", "u6"}], ")"}], "*", "2", "*", 
       RowBox[{"Cos", "[", 
        RowBox[{"\[Pi]", "/", "4"}], "]"}]}]}], ";", "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"t8", "=", 
      RowBox[{
       RowBox[{"(", 
        RowBox[{"u7", "+", "u5"}], ")"}], "*", "2", "*", 
       RowBox[{"Cos", "[", 
        RowBox[{"\[Pi]", "/", "8"}], "]"}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t7", "=", 
      RowBox[{"t8", "-", 
       RowBox[{"2", "*", 
        RowBox[{"(", 
         RowBox[{
          RowBox[{"Cos", "[", 
           RowBox[{"\[Pi]", "/", "8"}], "]"}], "-", 
          RowBox[{"Cos", "[", 
           RowBox[{"3", 
            RowBox[{"\[Pi]", "/", "8"}]}], "]"}]}], ")"}], "*", "u7"}]}]}], 
     ";", "\[IndentingNewLine]", 
     RowBox[{"t5", "=", 
      RowBox[{"t8", "-", 
       RowBox[{"2", "*", 
        RowBox[{"(", 
         RowBox[{
          RowBox[{"Cos", "[", 
           RowBox[{"\[Pi]", "/", "8"}], "]"}], "+", 
          RowBox[{"Cos", "[", 
           RowBox[{"3", 
            RowBox[{"\[Pi]", "/", "8"}]}], "]"}]}], ")"}], "*", "u5"}]}]}], 
     ";", "\[IndentingNewLine]", "\[IndentingNewLine]", 
     RowBox[{"u4", "=", "t4"}], ";", "\[IndentingNewLine]", 
     RowBox[{"u5", "=", 
      RowBox[{"u4", "-", "t5"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u6", "=", 
      RowBox[{"u5", "+", "t6"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u7", "=", 
      RowBox[{"u6", "-", "t7"}]}], ";", "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"{", 
      RowBox[{"u4", ",", "u5", ",", "u6", ",", "u7"}], "}"}]}]}], 
   "]"}]}]], "Input",
 PageBreakBelow->False,
 CellChangeTimes->{{3.689445695252459*^9, 3.6894457820037622`*^9}, {
   3.68944585301608*^9, 3.689445907690462*^9}, {3.6894459480018167`*^9, 
   3.689446286515168*^9}, {3.689446535467774*^9, 3.68944655649657*^9}, {
   3.689446674333065*^9, 3.68944667594258*^9}, {3.689446848495316*^9, 
   3.689446883118988*^9}, {3.689446962053083*^9, 3.689446986293494*^9}, {
   3.689447106395142*^9, 3.689447107369343*^9}, {3.689447164060651*^9, 
   3.689447219300406*^9}, 3.689447295815166*^9, 3.6894474522226477`*^9, {
   3.6894475804204597`*^9, 3.689447580672407*^9}, {3.689447742597603*^9, 
   3.689447827219873*^9}, {3.689447956667194*^9, 3.689448122202976*^9}, {
   3.689448349323365*^9, 3.68944835188838*^9}, {3.689448395554244*^9, 
   3.6894484035872383`*^9}, {3.689449198922471*^9, 3.689449204031884*^9}, {
   3.6894492419932537`*^9, 3.689449251465806*^9}, {3.6894492862350197`*^9, 
   3.6894493036148863`*^9}, {3.6894504449846363`*^9, 3.689450446460721*^9}, {
   3.68945087150878*^9, 3.68945087612514*^9}, {3.6894510868496513`*^9, 
   3.689451086960025*^9}, {3.689451152674242*^9, 3.689451156363415*^9}, {
   3.6894512262578783`*^9, 3.689451226554707*^9}, 3.689465792534829*^9, {
   3.6894662872811937`*^9, 3.6894663134852867`*^9}, {3.6894665992577877`*^9, 
   3.689466603260457*^9}, {3.689466650187216*^9, 3.689466668123728*^9}, {
   3.6894667859382677`*^9, 3.6894667903272963`*^9}, {3.689466826183941*^9, 
   3.68946683394322*^9}, {3.6894668727408657`*^9, 3.689466894161375*^9}, {
   3.6894669378665657`*^9, 3.689466944385461*^9}, {3.689466990256053*^9, 
   3.689467087876157*^9}, {3.689467129122739*^9, 3.689467141744265*^9}, {
   3.6894672222829638`*^9, 3.689467240548752*^9}, {3.689467283750731*^9, 
   3.689467287682472*^9}, {3.689467887811517*^9, 3.689467892606676*^9}, {
   3.68946832155613*^9, 3.6894683238960876`*^9}, {3.689468416903575*^9, 
   3.689468418335105*^9}, {3.6894684743524923`*^9, 3.689468489479195*^9}, {
   3.689468542852496*^9, 3.6894685614116793`*^9}, {3.689469752908738*^9, 
   3.689469783875272*^9}, {3.6894699010995407`*^9, 3.689469971589818*^9}, {
   3.689470116678801*^9, 3.689470118331395*^9}, {3.689470159615844*^9, 
   3.68947016106866*^9}, {3.689470248093831*^9, 3.689470250356036*^9}, {
   3.689470445182259*^9, 3.6894704482863207`*^9}, {3.6894705166111183`*^9, 
   3.689470587900071*^9}, 3.689472794412318*^9}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Total", "[", 
  RowBox[{"Total", "[", 
   RowBox[{"Abs", "[", 
    RowBox[{"N", "[", 
     RowBox[{
      RowBox[{"IdentityMatrix", "[", "4", "]"}], "-", 
      RowBox[{"idst4", "/@", 
       RowBox[{"Transpose", "[", 
        RowBox[{"dst", "[", "4", "]"}], "]"}]}]}], "]"}], "]"}], "]"}], 
  "]"}]], "Input",
 PageBreakBelow->Automatic,
 CellChangeTimes->{{3.6894472494828653`*^9, 3.6894472629120083`*^9}, {
   3.689447574259481*^9, 3.689447574505498*^9}, {3.689448897437771*^9, 
   3.689448897729789*^9}, {3.689450929633257*^9, 3.6894509553928967`*^9}, {
   3.6894510907091293`*^9, 3.6894510908231277`*^9}, {3.6894511338792*^9, 
   3.689451134467429*^9}, {3.689451231329599*^9, 3.689451231599155*^9}, 
   3.6894662994882298`*^9, 3.6894728013394136`*^9}],

Cell[BoxData["1.9984014443252818`*^-15"], "Output",
 PageBreakBelow->Automatic,
 CellChangeTimes->{
  3.68945096207164*^9, 3.68945102796856*^9, 3.689451091241272*^9, {
   3.689451135807502*^9, 3.689451159939712*^9}, {3.689451232024044*^9, 
   3.689451235813046*^9}, 3.689452761773919*^9, 3.68945315111896*^9, 
   3.689454563593154*^9, 3.68945461094846*^9, 3.6894550310851192`*^9, 
   3.689456093409506*^9, 3.68945746900143*^9, 3.68945804406341*^9, 
   3.689458075356803*^9, 3.689459902458769*^9, 3.689460001100891*^9, 
   3.689465797226542*^9, 3.689466300156739*^9, {3.68946659477306*^9, 
   3.689466605972562*^9}, 3.689466670439208*^9, 3.689466792148904*^9, {
   3.689466836557539*^9, 3.689466837960938*^9}, 3.689466993644548*^9, {
   3.689467032207793*^9, 3.689467090180851*^9}, {3.6894671347985697`*^9, 
   3.689467143985942*^9}, {3.689467230828949*^9, 3.689467242718001*^9}, 
   3.689467290333053*^9, 3.689467401066596*^9, {3.689470541646453*^9, 
   3.6894705582459717`*^9}, 3.689470602509077*^9, 3.689472216646935*^9, 
   3.689472827506925*^9, 3.689472865732617*^9}]
}, Open  ]],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{
   RowBox[{
    RowBox[{"Orthonormal", " ", "inverse", " ", "8"}], "-", 
    RowBox[{"point", " ", "Type"}], "-", 
    RowBox[{
    "II", " ", "DCT", " ", "based", " ", "on", " ", "the", " ", "Chen", " ", 
     RowBox[{"factorization", " ", "[", "1", "]"}], " ", "with", " ", "scale",
      " ", "factors", " ", "moved", " ", "up", " ", 
     RowBox[{"front", ".", "  ", "This"}], " ", "computes", " ", "an", " ", 
     "n"}], "-", 
    RowBox[{"point", " ", "Type"}], "-", 
    RowBox[{
    "II", " ", "DCT", " ", "by", " ", "first", " ", "computing", " ", "an", 
     " ", 
     RowBox[{"n", "/", "2"}]}], "-", 
    RowBox[{"point", " ", "Type"}], "-", 
    RowBox[{
    "II", " ", "DCT", " ", "of", " ", "the", " ", "even", " ", "indexed", " ",
      "inputs", " ", "and", " ", "an", " ", 
     RowBox[{"n", "/", "2"}]}], "-", 
    RowBox[{"point", " ", "Type"}], "-", 
    RowBox[{
    "IV", " ", "DST", " ", "of", " ", "the", " ", "odd", " ", "indexed", " ", 
     "inputs"}]}], ",", " ", 
   RowBox[{
   "and", " ", "then", " ", "combining", " ", "them", " ", "using", " ", "a", 
    " ", "\"\<butterfly\>\"", " ", 
    RowBox[{"operation", ".", "\[IndentingNewLine]", "\[IndentingNewLine]", 
     RowBox[{"[", "1", "]"}]}], " ", 
    RowBox[{"W", ".", "H", ".", " ", "Chen"}]}], ",", " ", 
   RowBox[{"C", ".", " ", "Smith"}], ",", " ", 
   RowBox[{"and", " ", 
    RowBox[{"S", ".", " ", "Fralick"}]}], ",", " ", 
   "\"\<A Fast Computational Algorithm for the Discrete Cosine Transform\>\"",
    ",", " ", 
   RowBox[{"IEEE", " ", "Transactions", " ", "on", " ", "Communications"}], 
   ",", " ", 
   RowBox[{"Vol", ".", " ", "25"}], ",", " ", 
   RowBox[{"No", ".", " ", "9"}], ",", " ", 
   RowBox[{
    RowBox[{"pp", " ", "1004"}], "-", "1009"}], ",", " ", 
   RowBox[{"Sept", ".", " ", "1977"}]}], " ", "*)"}]], "Input",
 PageBreakAbove->True,
 CellChangeTimes->{{3.68945702259615*^9, 3.6894572108412247`*^9}, {
  3.689457242354134*^9, 3.689457245080018*^9}, {3.689457275288521*^9, 
  3.68945742917181*^9}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"idct8", "[", 
   RowBox[{"{", 
    RowBox[{
    "x0_", ",", "x4_", ",", "x2_", ",", "x6_", ",", "x1_", ",", "x5_", ",", 
     "x3_", ",", "x7_"}], "}"}], "]"}], ":=", 
  RowBox[{"Module", "[", 
   RowBox[{
    RowBox[{"{", 
     RowBox[{
     "t0", ",", "t4", ",", "t2", ",", "t6", ",", "t1", ",", "t5", ",", "t3", 
      ",", "t7", ",", "u0", ",", "u1", ",", "u2", ",", "u3", ",", "u4", ",", 
      "u5", ",", "u6", ",", "u7"}], "}"}], ",", "\[IndentingNewLine]", 
    RowBox[{
     RowBox[{"t0", "=", 
      RowBox[{"x0", "/", 
       RowBox[{"Sqrt", "[", "2", "]"}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t4", "=", 
      RowBox[{"x4", "/", 
       RowBox[{"Sqrt", "[", "2", "]"}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t2", "=", 
      RowBox[{"x2", "/", 
       RowBox[{"Sqrt", "[", "2", "]"}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t6", "=", 
      RowBox[{"x6", "/", 
       RowBox[{"Sqrt", "[", "2", "]"}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t1", "=", 
      RowBox[{"x1", "/", 
       RowBox[{"Sqrt", "[", "2", "]"}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t5", "=", 
      RowBox[{"x5", "/", 
       RowBox[{"Sqrt", "[", "2", "]"}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t3", "=", 
      RowBox[{"x3", "/", 
       RowBox[{"Sqrt", "[", "2", "]"}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t7", "=", 
      RowBox[{"x7", "/", 
       RowBox[{"Sqrt", "[", "2", "]"}]}]}], ";", "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{
      RowBox[{"{", 
       RowBox[{"t0", ",", "t1", ",", "t2", ",", "t3"}], "}"}], "=", 
      RowBox[{"idct4", "[", 
       RowBox[{"{", 
        RowBox[{"t0", ",", "t2", ",", "t1", ",", "t3"}], "}"}], "]"}]}], ";", 
     "\[IndentingNewLine]", 
     RowBox[{
      RowBox[{"{", 
       RowBox[{"t7", ",", "t6", ",", "t5", ",", "t4"}], "}"}], "=", 
      RowBox[{"idst4", "[", 
       RowBox[{"{", 
        RowBox[{"t7", ",", "t5", ",", "t6", ",", "t4"}], "}"}], "]"}]}], ";", 
     "\[IndentingNewLine]", "\[IndentingNewLine]", 
     RowBox[{"(*", " ", "Butterflies", " ", "*)"}], "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"u0", "=", 
      RowBox[{"t0", "+", "t7"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u7", "=", 
      RowBox[{"t0", "-", "t7"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u6", "=", 
      RowBox[{"t1", "+", "t6"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u1", "=", 
      RowBox[{"t1", "-", "t6"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u2", "=", 
      RowBox[{"t2", "+", "t5"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u5", "=", 
      RowBox[{"t2", "-", "t5"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u4", "=", 
      RowBox[{"t3", "+", "t4"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u3", "=", 
      RowBox[{"t3", "-", "t4"}]}], ";", "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"{", 
      RowBox[{
      "u0", ",", "u1", ",", "u2", ",", "u3", ",", "u4", ",", "u5", ",", "u6", 
       ",", "u7"}], "}"}]}]}], "]"}]}]], "Input",
 PageBreakBelow->False,
 CellChangeTimes->{{3.689448577238652*^9, 3.689448587872095*^9}, {
   3.689448623850572*^9, 3.6894486355337467`*^9}, {3.689448684636195*^9, 
   3.689448782061118*^9}, {3.689448853405546*^9, 3.6894488670436707`*^9}, {
   3.689448972929706*^9, 3.68944899116083*^9}, {3.689449369231512*^9, 
   3.6894494717629957`*^9}, {3.6894495196077833`*^9, 
   3.6894496615583773`*^9}, {3.689449749679837*^9, 3.689449769845858*^9}, {
   3.68944980106129*^9, 3.6894498292849283`*^9}, {3.689449868176887*^9, 
   3.689450027509863*^9}, {3.689450080819066*^9, 3.689450127891574*^9}, {
   3.68945038075333*^9, 3.689450422434198*^9}, {3.689450829214044*^9, 
   3.6894508458252497`*^9}, {3.689451175613762*^9, 3.689451178301817*^9}, {
   3.689451294143977*^9, 3.689451352248102*^9}, {3.689456030061327*^9, 
   3.6894560307713633`*^9}, {3.6894572225105333`*^9, 3.68945722616226*^9}, {
   3.689467679145486*^9, 3.6894677132518997`*^9}, 3.689468182741802*^9, {
   3.689470752578184*^9, 3.68947078709555*^9}, 3.6894727981464233`*^9, 
   3.689472833188599*^9}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Total", "[", 
  RowBox[{"Total", "[", 
   RowBox[{"Abs", "[", 
    RowBox[{"N", "[", 
     RowBox[{
      RowBox[{"IdentityMatrix", "[", "8", "]"}], "-", 
      RowBox[{"idct8", "/@", 
       RowBox[{"Transpose", "[", 
        RowBox[{"dct", "[", "8", "]"}], "]"}]}]}], "]"}], "]"}], "]"}], 
  "]"}]], "Input",
 CellChangeTimes->{3.6894502141694098`*^9}],

Cell[BoxData["3.969047313034935`*^-15"], "Output",
 CellChangeTimes->{{3.689448608729958*^9, 3.689448638195064*^9}, {
   3.6894487144655457`*^9, 3.689448737736093*^9}, 3.689448770781005*^9, 
   3.689448817934579*^9, {3.6894488606845493`*^9, 3.6894488693784237`*^9}, {
   3.6894489774662113`*^9, 3.689448994406393*^9}, {3.6894493483123093`*^9, 
   3.689449474368616*^9}, {3.6894495247101994`*^9, 3.6894495519655123`*^9}, {
   3.689449601767807*^9, 3.68944961137698*^9}, {3.68944964212421*^9, 
   3.689449663358539*^9}, {3.689449755184499*^9, 3.689449772074945*^9}, {
   3.689449811276986*^9, 3.689449831057026*^9}, {3.689449900632512*^9, 
   3.689449912032151*^9}, {3.689449963148637*^9, 3.689449997319137*^9}, {
   3.689450034843402*^9, 3.689450037439507*^9}, 3.689450100430327*^9, 
   3.689450131044732*^9, 3.6894502145116053`*^9, 3.6894502841079607`*^9, 
   3.689450426748858*^9, 3.689450659203659*^9, {3.689450825647483*^9, 
   3.6894508436009293`*^9}, 3.689451181625558*^9, 3.689451243454033*^9, 
   3.689451354478397*^9, 3.689452765843547*^9, 3.689453156221768*^9, 
   3.6894545676842403`*^9, 3.6894546156539927`*^9, 3.689455035794846*^9, 
   3.6894560967566357`*^9, 3.68945747516364*^9, 3.6894580798190804`*^9, 
   3.689459908287321*^9, 3.689460006216713*^9, {3.689467676674815*^9, 
   3.689467717454232*^9}, 3.689468185004757*^9, 3.689470755736525*^9, 
   3.689470789482761*^9, 3.689472220626175*^9, 3.689472835910244*^9, 
   3.689472870782838*^9}]
}, Open  ]],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{
   RowBox[{
    RowBox[{"Orthonormal", " ", "inverse", " ", "8"}], "-", 
    RowBox[{"point", " ", "Type"}], "-", 
    RowBox[{
    "II", " ", "DCT", " ", "based", " ", "on", " ", "the", " ", "AAN", " ", 
     RowBox[{
      RowBox[{"factorization", " ", "[", "2", "]"}], ".", "  ", "Excluding"}],
      " ", "initial", " ", "scale", " ", "factors"}]}], ",", " ", 
   RowBox[{
    RowBox[{
    "this", " ", "implementation", " ", "computes", " ", "the", " ", "scaled",
      " ", "inverse", " ", "8"}], "-", 
    RowBox[{"point", " ", "Type"}], "-", 
    RowBox[{
    "II", " ", "DCT", " ", "with", " ", "only", " ", "29", " ", "adds", " ", 
     "and", " ", "5", " ", 
     RowBox[{
     "multiplies", ".", "\[IndentingNewLine]", "\[IndentingNewLine]", 
      RowBox[{"[", "2", "]"}]}], " ", 
     RowBox[{"Y", ".", " ", "Arai"}]}]}], ",", " ", 
   RowBox[{"T", ".", " ", "Agui"}], ",", " ", 
   RowBox[{"and", " ", 
    RowBox[{"M", ".", " ", "Nakajima"}]}], ",", " ", 
   "\"\<A Fast DCT-SQ Scheme For Images\>\"", ",", " ", 
   RowBox[{"IEICE", " ", "Transactions"}], ",", " ", 
   RowBox[{
    RowBox[{"Vol", ".", " ", "E"}], "-", "71"}], ",", " ", 
   RowBox[{"No", ".", " ", "11"}], ",", " ", 
   RowBox[{
    RowBox[{"pp", " ", "1095"}], "-", "1097"}], ",", " ", 
   RowBox[{"Nov", ".", " ", "1988"}]}], " ", "*)"}]], "Input",
 PageBreakBelow->False,
 CellChangeTimes->{{3.689448577238652*^9, 3.689448587872095*^9}, {
   3.689448623850572*^9, 3.6894486355337467`*^9}, {3.689448684636195*^9, 
   3.689448782061118*^9}, {3.689448853405546*^9, 3.6894488670436707`*^9}, {
   3.689448972929706*^9, 3.68944899116083*^9}, {3.689449369231512*^9, 
   3.6894494717629957`*^9}, {3.6894495196077833`*^9, 
   3.6894496615583773`*^9}, {3.689449749679837*^9, 3.689449769845858*^9}, {
   3.68944980106129*^9, 3.6894498292849283`*^9}, {3.689449868176887*^9, 
   3.689450027509863*^9}, {3.689450080819066*^9, 3.689450127891574*^9}, {
   3.68945038075333*^9, 3.689450422434198*^9}, 3.689450759404271*^9, {
   3.6894512545550947`*^9, 3.689451256785281*^9}, {3.689451357603106*^9, 
   3.689451454030198*^9}, {3.6894514915077553`*^9, 3.68945150456291*^9}, {
   3.689451654902514*^9, 3.6894516686303673`*^9}, {3.689451791393211*^9, 
   3.689451882468557*^9}, {3.6894519251522017`*^9, 3.689452027485874*^9}, {
   3.689452081320332*^9, 3.6894521091254807`*^9}, {3.689452141956667*^9, 
   3.6894522359863*^9}, {3.689452282955216*^9, 3.689452299882728*^9}, {
   3.689452532833527*^9, 3.6894526532233152`*^9}, {3.6894527879549847`*^9, 
   3.689452970574792*^9}, {3.689453548890923*^9, 3.6894535547923822`*^9}, {
   3.6894541166079683`*^9, 3.6894541815793447`*^9}, 3.689454293196877*^9, {
   3.689454450893663*^9, 3.689454458348915*^9}, {3.689454503777223*^9, 
   3.689454529884664*^9}, {3.689454587872168*^9, 3.68945458973428*^9}, 
   3.689454962365588*^9, {3.689455868952978*^9, 3.689455907136826*^9}, {
   3.689456056821529*^9, 3.6894560597742977`*^9}, {3.689456378411188*^9, 
   3.689456472853923*^9}, {3.689457232409031*^9, 3.689457236927801*^9}, {
   3.6894579988226023`*^9, 3.689458000344494*^9}, {3.6894727060327806`*^9, 
   3.6894727419577923`*^9}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"idct8fast", "[", 
   RowBox[{"{", 
    RowBox[{
    "x0_", ",", "x4_", ",", "x2_", ",", "x6_", ",", "x1_", ",", "x5_", ",", 
     "x3_", ",", "x7_"}], "}"}], "]"}], ":=", 
  RowBox[{"Module", "[", 
   RowBox[{
    RowBox[{"{", 
     RowBox[{
     "t0", ",", "t4", ",", "t2", ",", "t6", ",", "t1", ",", "t5", ",", "t3", 
      ",", "t7", ",", "u0", ",", "u1", ",", "u2", ",", "u3", ",", "u4", ",", 
      "u5", ",", "u6", ",", "u7", ",", "u8"}], "}"}], ",", 
    "\[IndentingNewLine]", 
    RowBox[{
     RowBox[{"t0", "=", 
      RowBox[{"x0", "/", 
       RowBox[{"Sqrt", "[", "8", "]"}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u4", "=", 
      RowBox[{"x4", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"\[Pi]", "/", "16"}], "]"}], "/", "2"}]}]}], ";", 
     "\[IndentingNewLine]", 
     RowBox[{"t2", "=", 
      RowBox[{"x2", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"2", 
          RowBox[{"\[Pi]", "/", "16"}]}], "]"}], "/", "2"}]}]}], ";", 
     "\[IndentingNewLine]", 
     RowBox[{"u6", "=", 
      RowBox[{"x6", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"3", 
          RowBox[{"\[Pi]", "/", "16"}]}], "]"}], "/", "2"}]}]}], ";", 
     "\[IndentingNewLine]", 
     RowBox[{"t1", "=", 
      RowBox[{"x1", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"4", 
          RowBox[{"\[Pi]", "/", "16"}]}], "]"}], "/", "2"}]}]}], ";", 
     "\[IndentingNewLine]", 
     RowBox[{"u5", "=", 
      RowBox[{"x5", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"5", 
          RowBox[{"\[Pi]", "/", "16"}]}], "]"}], "/", "2"}]}]}], ";", 
     "\[IndentingNewLine]", 
     RowBox[{"t3", "=", 
      RowBox[{"x3", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"6", 
          RowBox[{"\[Pi]", "/", "16"}]}], "]"}], "/", "2"}]}]}], ";", 
     "\[IndentingNewLine]", 
     RowBox[{"u7", "=", 
      RowBox[{"x7", "*", 
       RowBox[{
        RowBox[{"Cos", "[", 
         RowBox[{"7", 
          RowBox[{"\[Pi]", "/", "16"}]}], "]"}], "/", "2"}]}]}], ";", 
     "\[IndentingNewLine]", "\[IndentingNewLine]", 
     RowBox[{"(*", " ", 
      RowBox[{
       RowBox[{"Embedded", " ", "scaled", " ", "inverse", " ", "4"}], "-", 
       RowBox[{"point", " ", "Type"}], "-", 
       RowBox[{
       "II", " ", "DCT", " ", "using", " ", "9", " ", "adds", " ", "and", " ",
         "1", " ", 
        RowBox[{"multiply", "."}]}]}], " ", "*)"}], "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"u0", "=", 
      RowBox[{"t0", "+", "t1"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u1", "=", 
      RowBox[{"t0", "-", "t1"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u3", "=", 
      RowBox[{"t2", "+", "t3"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u2", "=", 
      RowBox[{
       RowBox[{
        RowBox[{"(", 
         RowBox[{"t2", "-", "t3"}], ")"}], "*", "2", "*", 
        RowBox[{"Cos", "[", 
         RowBox[{"\[Pi]", "/", "4"}], "]"}]}], "-", "u3"}]}], ";", 
     "\[IndentingNewLine]", "\[IndentingNewLine]", 
     RowBox[{"t0", "=", 
      RowBox[{"u0", "+", "u3"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t3", "=", 
      RowBox[{"u0", "-", "u3"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t1", "=", 
      RowBox[{"u1", "+", "u2"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t2", "=", 
      RowBox[{"u1", "-", "u2"}]}], ";", "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"(*", " ", 
      RowBox[{
       RowBox[{"Embedded", " ", "scaled", " ", "inverse", " ", "4"}], "-", 
       RowBox[{"point", " ", "Type"}], "-", 
       RowBox[{
       "IV", " ", "DST", " ", "using", " ", "12", " ", "adds", " ", "and", 
        " ", "4", " ", 
        RowBox[{"multiplies", "."}]}]}], " ", "*)"}], "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"t5", "=", 
      RowBox[{"u5", "+", "u6"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t6", "=", 
      RowBox[{"u5", "-", "u6"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t7", "=", 
      RowBox[{"u4", "+", "u7"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t4", "=", 
      RowBox[{"u4", "-", "u7"}]}], ";", "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"u7", "=", 
      RowBox[{"t7", "+", "t5"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u5", "=", 
      RowBox[{
       RowBox[{"(", 
        RowBox[{"t7", "-", "t5"}], ")"}], "*", "2", "*", 
       RowBox[{"Cos", "[", 
        RowBox[{"\[Pi]", "/", "4"}], "]"}]}]}], ";", "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"u8", "=", 
      RowBox[{
       RowBox[{"(", 
        RowBox[{"t4", "+", "t6"}], ")"}], "*", "2", "*", 
       RowBox[{"Cos", "[", 
        RowBox[{"\[Pi]", "/", "8"}], "]"}]}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u4", "=", 
      RowBox[{"u8", "-", 
       RowBox[{"2", "*", 
        RowBox[{"(", 
         RowBox[{
          RowBox[{"Cos", "[", 
           RowBox[{"\[Pi]", "/", "8"}], "]"}], "-", 
          RowBox[{"Cos", "[", 
           RowBox[{"3", 
            RowBox[{"\[Pi]", "/", "8"}]}], "]"}]}], ")"}], "*", "t4"}]}]}], 
     ";", "\[IndentingNewLine]", 
     RowBox[{"u6", "=", 
      RowBox[{"u8", "-", 
       RowBox[{"2", "*", 
        RowBox[{"(", 
         RowBox[{
          RowBox[{"Cos", "[", 
           RowBox[{"\[Pi]", "/", "8"}], "]"}], "+", 
          RowBox[{"Cos", "[", 
           RowBox[{"3", 
            RowBox[{"\[Pi]", "/", "8"}]}], "]"}]}], ")"}], "*", "t6"}]}]}], 
     ";", "\[IndentingNewLine]", "\[IndentingNewLine]", 
     RowBox[{"t7", "=", "u7"}], ";", "\[IndentingNewLine]", 
     RowBox[{"t6", "=", 
      RowBox[{"t7", "-", "u6"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t5", "=", 
      RowBox[{"t6", "+", "u5"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"t4", "=", 
      RowBox[{"t5", "-", "u4"}]}], ";", "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"(*", " ", "Butterflies", " ", "*)"}], "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"u0", "=", 
      RowBox[{"t0", "+", "t7"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u7", "=", 
      RowBox[{"t0", "-", "t7"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u6", "=", 
      RowBox[{"t1", "+", "t6"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u1", "=", 
      RowBox[{"t1", "-", "t6"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u2", "=", 
      RowBox[{"t2", "+", "t5"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u5", "=", 
      RowBox[{"t2", "-", "t5"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u4", "=", 
      RowBox[{"t3", "+", "t4"}]}], ";", "\[IndentingNewLine]", 
     RowBox[{"u3", "=", 
      RowBox[{"t3", "-", "t4"}]}], ";", "\[IndentingNewLine]", 
     "\[IndentingNewLine]", 
     RowBox[{"{", 
      RowBox[{
      "u0", ",", "u1", ",", "u2", ",", "u3", ",", "u4", ",", "u5", ",", "u6", 
       ",", "u7"}], "}"}]}]}], "]"}]}]], "Input",
 PageBreakBelow->False,
 CellChangeTimes->{{3.689448577238652*^9, 3.689448587872095*^9}, {
   3.689448623850572*^9, 3.6894486355337467`*^9}, {3.689448684636195*^9, 
   3.689448782061118*^9}, {3.689448853405546*^9, 3.6894488670436707`*^9}, {
   3.689448972929706*^9, 3.68944899116083*^9}, {3.689449369231512*^9, 
   3.6894494717629957`*^9}, {3.6894495196077833`*^9, 
   3.6894496615583773`*^9}, {3.689449749679837*^9, 3.689449769845858*^9}, {
   3.68944980106129*^9, 3.6894498292849283`*^9}, {3.689449868176887*^9, 
   3.689450027509863*^9}, {3.689450080819066*^9, 3.689450127891574*^9}, {
   3.68945038075333*^9, 3.689450422434198*^9}, {3.689450829214044*^9, 
   3.6894508458252497`*^9}, {3.689451175613762*^9, 3.689451178301817*^9}, {
   3.689451294143977*^9, 3.689451352248102*^9}, {3.689456030061327*^9, 
   3.6894560307713633`*^9}, {3.6894572225105333`*^9, 3.68945722616226*^9}, {
   3.689467679145486*^9, 3.6894677132518997`*^9}, 3.689468182741802*^9, {
   3.689470752578184*^9, 3.68947078709555*^9}, {3.6894708902302*^9, 
   3.689470901831601*^9}, {3.6894709356646433`*^9, 3.6894709365677137`*^9}, {
   3.689470968580694*^9, 3.6894711153916597`*^9}, {3.689471172667121*^9, 
   3.689471384920129*^9}, {3.689471433815342*^9, 3.68947143476134*^9}, {
   3.689471465841207*^9, 3.689471477871907*^9}, {3.689471525868978*^9, 
   3.689471684366899*^9}, {3.689471773449905*^9, 3.6894717870329723`*^9}, {
   3.689471833391068*^9, 3.689471995332961*^9}, {3.689472255201939*^9, 
   3.6894722892571783`*^9}, {3.6894723469818077`*^9, 3.689472463728952*^9}, {
   3.6894725421660547`*^9, 3.689472560849793*^9}, {3.6894726068773937`*^9, 
   3.689472657215685*^9}, 3.6894727633983583`*^9}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Total", "[", 
  RowBox[{"Total", "[", 
   RowBox[{"Abs", "[", 
    RowBox[{"N", "[", 
     RowBox[{
      RowBox[{"IdentityMatrix", "[", "8", "]"}], "-", 
      RowBox[{"idct8fast", "/@", 
       RowBox[{"Transpose", "[", 
        RowBox[{"dct", "[", "8", "]"}], "]"}]}]}], "]"}], "]"}], "]"}], 
  "]"}]], "Input",
 CellChangeTimes->{{3.6894508035381804`*^9, 3.689450814203877*^9}, 
   3.689470923646421*^9, 3.689472759633995*^9}],

Cell[BoxData["3.969047313034935`*^-15"], "Output",
 CellChangeTimes->{
  3.689470924060236*^9, {3.6894709885705357`*^9, 3.68947099036353*^9}, {
   3.689471038555942*^9, 3.689471064758396*^9}, {3.689471112961103*^9, 
   3.689471118597917*^9}, 3.689471312925098*^9, {3.689471390639028*^9, 
   3.6894713917515163`*^9}, {3.689471550111281*^9, 3.6894715589476433`*^9}, {
   3.689471615128286*^9, 3.6894716232878313`*^9}, 3.6894717429017963`*^9, 
   3.68947195529611*^9, 3.689471998068708*^9, 3.689472229741026*^9, 
   3.689472293337842*^9, 3.689472351950179*^9, 3.689472384459087*^9, {
   3.6894724202089643`*^9, 3.689472438483705*^9}, 3.689472526687201*^9, 
   3.689472565701481*^9, {3.689472618590626*^9, 3.689472633945714*^9}, 
   3.689472664613011*^9, {3.689472756479657*^9, 3.6894727659612226`*^9}, 
   3.689472841207838*^9, 3.689472875499711*^9}]
}, Open  ]]
},
WindowSize->{886, 1228},
WindowMargins->{{0, Automatic}, {33, Automatic}},
FrontEndVersion->"7.0 for Linux x86 (64-bit) (February 25, 2009)",
StyleDefinitions->Notebook[{
   Cell[
    StyleData[StyleDefinitions -> "Default.nb"]], 
   Cell[
    CellGroupData[{
      Cell[
      "Cell[StyleData[All, \"Printout\"],\n ShowSyntaxStyles->True]", 
       "Input"], 
      Cell[
       StyleData[All, "Printout"], ShowSyntaxStyles -> True]}, Open]]}, 
  Visible -> False, FrontEndVersion -> 
  "7.0 for Linux x86 (64-bit) (February 25, 2009)", StyleDefinitions -> 
  "PrivateStylesheetFormatting.nb"]
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[545, 20, 843, 25, 55, "Input"],
Cell[1391, 47, 771, 24, 55, "Input"],
Cell[2165, 73, 432, 10, 32, "Input"],
Cell[2600, 85, 4275, 88, 385, "Input"],
Cell[CellGroupData[{
Cell[6900, 177, 737, 16, 32, "Input"],
Cell[7640, 195, 881, 12, 31, "Output"]
}, Open  ]],
Cell[8536, 210, 404, 10, 32, "Input"],
Cell[8943, 222, 5915, 129, 539, "Input",
 PageBreakBelow->False],
Cell[CellGroupData[{
Cell[14883, 355, 780, 17, 32, "Input",
 PageBreakBelow->Automatic],
Cell[15666, 374, 1071, 16, 31, "Output",
 PageBreakBelow->Automatic]
}, Open  ]],
Cell[16752, 393, 2066, 47, 231, "Input",
 PageBreakAbove->True],
Cell[18821, 442, 4145, 92, 583, "Input",
 PageBreakBelow->False],
Cell[CellGroupData[{
Cell[22991, 538, 378, 11, 32, "Input"],
Cell[23372, 551, 1455, 20, 31, "Output"]
}, Open  ]],
Cell[24842, 574, 3183, 59, 187, "Input",
 PageBreakBelow->False],
Cell[28028, 635, 8644, 208, 1199, "Input",
 PageBreakBelow->False],
Cell[CellGroupData[{
Cell[36697, 847, 454, 12, 32, "Input"],
Cell[37154, 861, 847, 12, 31, "Output"]
}, Open  ]]
}
]
*)

(* End of internal cache information *)
